<?php
    use yii\helpers\Url;
    use common\component\MenuHelper;
    use yii\helpers\Html;

    $menuRows = MenuHelper::getAssignedMenu(Yii::$app->user->id,null,null,true);   //获得用户权限列表

    $route = Yii::$app->controller->getRoute(); //获取当前控制器路由
    $routeArray = explode('/', $route);
    array_pop($routeArray);
    $controllerName = implode('/', $routeArray);    //获取当前控制器

    //判断是否当前链接
    function isSubUrl($menuArray, $route)
    {
        if (isset($menuArray) && is_array($menuArray)) {
            if (isset($menuArray['items'])) {
                foreach ($menuArray['items'] as $item)
                {
                    if (isSubUrl($item, $route)) {
                        return true;
                    }
                }
            } else {
                $url = is_array($menuArray['url']) ? $menuArray['url'][0] : $menuArray['url'];
                if (strpos($url, $route)) {
                    return true;
                }
            }
        } else {
            $url = is_array($menuArray['url']) ? $menuArray['url'][0] : $menuArray['url'];
            if (strpos($url, $route)) {
                return true;
            }
        }
        return false;
    }

    //判断是否子菜单
    function isSubMenu($menuArray, $controllerName)
    {
        if (isset($menuArray) && is_array($menuArray)) {
            if (isset($menuArray['items'])) {
                foreach ($menuArray['items'] as $item)
                {
                    if (isSubMenu($item, $controllerName)) {
                        return true;
                    }
                }
            } else {
                $url = is_array($menuArray['url']) ? $menuArray['url'][0] : $menuArray['url'];
                if (strpos($url, $controllerName.'/')) {
                    return true;
                }
            }
        } else {
            $url = is_array($menuArray['url']) ? $menuArray['url'][0] : $menuArray['url'];
            if (strpos($url, $controllerName.'/')) {
                return true;
            }
        }
        return false;
    }


    //初始化菜单方法
    /**
     *  初始化菜单
     *  $menuRow            传入菜单
     *  $controllerName     控制器名称
     *  $isSubUrl           是否子菜单
     *  $isShowIcon         是否显示菜单图标
     */
    function initMenu($menuArray, $controllerName, $isSubUrl, $isShowIcon=true)
    {
        if (isset($menuArray) && is_array($menuArray)) {

            //获取URL链接
            $url = is_array($menuArray['url']) ? $menuArray['url'][0] : $menuArray['url'];

            //判断是否当前菜单
            if (empty($isSubUrl)) {
                $isSubMenu = isSubMenu($menuArray, $controllerName);
            } else {
                $route = Yii::$app->controller->getRoute();
                $isSubMenu = isSubUrl($menuArray, $route);
            }

            //如果是当前菜单,加样式
            if ($isSubMenu) {
                $class = ' layui-this ';
            } else {
                $class = '';
            }

            //判断名下是否还有子菜单
            if (isset($menuArray['items'])) {
                echo '<li class=" layui-nav-item ">';
            }else{
                echo '<dd class="'.$class.'">';
            }

            $url = $url == '#' ? 'javascript:;' : Url::toRoute($url);

            echo '<a data-id="'.$menuArray['id'].'" data-url="'.$url.'"  class="'.$class.'">'.($isShowIcon ? '<i class="fa fa-'.$menuArray['icon'].'" aria-hidden="true"></i> ' : '').'<span>'.$menuArray['label'].'</span></a>';

            if (isset($menuArray['items'])) {

                echo '<dl class="layui-nav-child">';

                if($isSubMenu){
                    echo '<dd class="'.$class.'">';
                }

                foreach ($menuArray['items'] as $item)
                {
                    echo initMenu($item, $controllerName, $isSubUrl);
                }
                echo '</dd>';
            }

            //判断名下是否还有子菜单
            if (isset($menuArray['items'])) {
                echo '</dl></li>';
            }
        }

    }
?>

<!-- 左侧菜单 -->
<div class="layui-side layui-bg-black left-menu-all ">
    <div class="layui-side-scroll">
        <ul class="layui-nav layui-nav-tree left-menu" lay-filter="left-menu">
            <li class="layui-nav-item">
                <a href="javascript:;" data-url="/user/index" data-id="999"> <i class="fa fa-home" aria-hidden="true" style="font-size:18px;"></i> 后台首页</a>
            </li>
            <?php
                //如果菜单存在
                if(isset($menuRows)){

                    //设置为false
                    $isSubUrl = false;

                    //循环显示菜单
                    foreach($menuRows as $menuRow){
                        $isSubUrl = isSubUrl($menuRow, $route);
                        if ($isSubUrl) {
                            break;
                        }
                    }

                    foreach($menuRows as $menuRow){
                        initMenu($menuRow, $controllerName, $isSubUrl, true);
                    }
                }
            ?>
        </ul>
    </div>
</div>